{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cf9a11e5",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "3410558f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "829b0c232fce4a3d8b4d5ebef68cc596",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/6 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总上涨月份数：31\n",
      "总月份数：60\n",
      "总体上涨概率：51.67%\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABetklEQVR4nO3dd3wUdf7H8ffsphFCCAkloEF6laogggrSxFNE8TyxoHA/RFHBUwHrgdydgIqoh2BDRdQTDyxgQVREAcUCaghFBCH0FhKyCem78/uDy8CSzaaQYTfJ6/l48Hiwn52d/Xy+U7KfndkZwzRNUwAAAAAAoMI5Ap0AAAAAAABVFU03AAAAAAA2oekGAAAAAMAmNN0AAAAAANiEphsAAAAAAJvQdAMAAAAAYBOabgAAAAAAbELTDQAAAACATWi6AQBeDh06pM6dO2vNmjXlev2KFSvUsWNHrV27toIzk/Ly8vT1119X+HwlKT09vcRpDh48qEWLFmnhwoWn9V4LFy7UypUr5fF4yvS67777ThkZGaf13oXuueceffzxxxUyr9Pldrv14Ycfavv27aWa/rnnnlNqaqokKTs7W3l5eV7Pf/zxx3r//ffLlcv111+vl19+uVTT5uTkSJI+//xzLVmyRJKUmZlpPb9s2TKvx77k5eWpoKDA53NvvfWWPv/8c7+vP3bsmNLS0op9/oUXXtBHH33kdx4AAHvRdAMAvDgcDiUmJhZpZErLMAwlJSXJMIwKzSsnJ0fXXHON/vnPf/p8/sILL1S9evXUokULn/+aNGkiwzD0+++/F3ntZ599phYtWigpKcmKJSYm6v/+7/909dVXq3v37oqNjVV8fLyuu+463XbbbX4bHX+OHDmiUaNG6a677rKattKaNWuWBg4cqKNHj5brvQstX75c//73v7V582YlJycX+2/btm3asWNHkdfn5OQoJCSkxH9RUVGlysftduuaa67RsmXLSpw2NTVVL774orp06aI1a9ZowIABCg8Pl2EYMgxDmZmZ+uijj6ymu6CgQD179lRiYqI1j4yMDE2cOFG5uble805LS9N7772nGjVqlJjHkiVL1LNnT2VmZuqDDz7Qf/7zH3k8Hp177rlasWKF8vLyNHjwYM2fP9/vfD788EM1adJEv/32W5Hn1qxZozFjxig/P7/Y199+++0aMGBAsV8aLVq0SN9++22J9QAA7BMS6AQAAIHj8XiKNNeFR93cbneRpjA0NFROp9PvPENCjv9piYyMrMBMpb/+9a8yDKPYo7ORkZGaPHmy7r77bp/PJycnq2nTpj4bqj59+qhNmza6/PLLtW7dOjVo0ED79u3T/Pnz9cgjj2jQoEFq1KiRGjVqpLPPPlv169eXw3Hie+sdO3aoWbNmRea7detWtWjRwis2fvx4uVwuzZgxQ3l5eT6/3MjLy1Nubq6io6NVu3ZtK/7mm2/qr3/9q4YOHaovv/zSK4fSSk1N1YgRIxQREaHHH39cjz/+eLHTFhQU6IILLtDy5cu94uHh4XK73VqxYoX69Onj87VvvfWW7r///lLlFBYWJsMwFB4eXuK0sbGx+v777zVs2DD98MMPeu+99+R0OrV27VpdfvnlCgsLU0REhLUef/nll1q/fr3OOeccax579uzRCy+8IJfLpRdffNGKL1iwQA0bNtSwYcNKzOOKK67QrFmz9PTTTys0NFRhYWFatGiRIiMj1bt3b61bt04FBQW69tpr/c5n7ty5ateundq0aSPTNLVp0yZFRETI6XTqL3/5i3JycrR161ZFRkaqoKBAOTk5Ovfcc63Xz5gxQ7169dKf/vQnff7556pZs6bX/ENDQ61tEgAQGOyFAaAaW7hwYbENRr9+/YrEnnvuOY0bN856nJWVJcMwFBYWVqQZr8gP+m+99ZbWrl2rn3/+udijkIZhaOLEiXr00Ud9Pl94KrevI/ARERH64IMP1KVLFz399NN68sknFRERoRo1auixxx4rMb9169bprLPO0ocffugVT0hI8Hr8zjvvaN68eapVq5ZuuukmK56amqqaNWtaTWdubq5yc3P11FNP6Z577rGmCwkJ0auvvqqLLrpITz75pB588MEScztZdna2hgwZItM0tW3bNp111lllen2hwqPKJSlNE13I4XCU+kuE2rVr6+OPP5bD4bDyKDyqHhoa6pXf3LlzdfPNNysmJsZ6fdu2bTV37lwNGzZMvXv31g033CBJevnll7Vnzx6FhYUVeU/DMLR37141bNhQkjRv3jxdcsklqlOnjlatWqVjx45p27Zt6t27txYtWqQ//vhD7du3V3h4uHVmQn5+vqKjo61xWbdunb7++mutX79eR44cUY0aNdS5c2fVqFFDDodD+fn5Cg0N1XvvvWe9Pjc31+t09Pj4eH366ac6//zz9fzzz+uBBx4o7ZADAM4Qmm4AqMYKm4s1a9bo7LPPliS5XC61b99e77//vrp162ZN27Vr1yJN1J133qk33njD57xbtWrlM37hhRfqu+++K3WOHo9HkyZN0muvveb3dOXs7Gz96U9/0kUXXeTz+dTUVP3zn/8s9pTuunXravny5daRaY/H47P58uXnn39Wp06ddP755xc7TWJiom677Ta1bdtW33//vaKjo73ee8aMGRoxYkSJ7xUaGqo33nhDF154ocaOHVvkyGZxUlNTdfXVV2vjxo36+uuvde6555Z4mvpnn32myy67zOdzpWmQy3MkviTHjh2TYRjWmRQ5OTnKycmxfjt98qnYe/bs0eLFi/Xrr78Wmc/111+vZcuW6Y477lDv3r21fv16bdy4UT/88IPq16/vNe2ECRO0e/duq+GWpG+++UZHjhzRtm3b9Pvvv+ucc87RunXr5Ha7tW7dOn333XfasGGD6tSp4zWvVatW6aKLLpJpmrr//vv1t7/9TW3atNHVV1+t/fv369ixYwoLC9PWrVvVp08fLVq0SBdeeKHfMWndurVWr16tjh07lmksAQBnBk03AFRjhU1RfHy81XQXNmL16tWzYoXTntpEPfHEE3rssce8Tjv/8MMPNWbMGG3YsEFxcXFe01911VVFYiVZvny5IiIiij2NuaCgQCEhIXr99deVlZXld15Dhw7VWWedpezsbOvofG5urhwOh0JDQ72+KMjLy1N6errPRrqgoEC5ublasWKF4uPjtW7dOvXo0aPY901KSlL//v0VGRmpJUuWeDXcJ/N4PNYp/x6Pp9gvGdq0aaMuXbpo0aJFuvXWW/3WXCgqKkpdunTRv//9b3Xs2FEul0tbtmxRVFSUhg4dqueff97rVPjGjRsrNjbW7zwvvfRSv8+ffEp3aaxcudLrKG7hTxw6depkLf9Jkybpgw8+0EsvvaQBAwbo4Ycf1jPPPGO95uTT9WfMmKG+ffuqffv2Pt9v5syZ6ty5s+rVq6dHHnlEI0eOVPfu3bVy5UodO3ZMl19+uUzT1Jo1a3THHXd4vXb+/Plat26dBg4cqPbt26t9+/aKiorSU089pczMTD311FP68ssv1a9fP+3fv1+NGjXSrl271KhRI0nSXXfdpdWrV2vgwIH6xz/+oSVLlujVV1+1vuiZNGmSWrRoofPOO0+S9Msvv6hLly7W+6elpWnVqlXW9A0aNFBWVpZ+//13RUREWEf6jx07piNHjli/GS9cx04+RR0AYC+abgCoxgqbaJfLZTXbhRdkyszM9DoSappmkVOKGzRoUGSeWVlZioiIULt27YpMn5ubW2Ijd6r169cXe/RaOnE6cWmPqrrdbkmyfo98++23W0fru3btqnXr1kk6Pg516tSxTlfftWuX7rnnHr344ouKi4tTVlaW1Tz//PPPOnjwoGbPnq2cnBz17dtXTz/9tFq2bCnpePM5YcIEDRw4UMOHD9cPP/zgla/b7dZf//pXjRw50or169dPX375ZbF1XHzxxVq/fn2papaOn9Xw3HPPSTp+ITGPx6PGjRvL4/EoOjpaV1xxhb766iurQc3KyipxWZX0m+7iTvUvzoIFC7yuOl5QUKC8vDzdc8891vvcfffd+vbbbzVo0CBt27ZNHo9H1113nf773/8Wmd9tt93m94KAMTExGjdunN59911t375dS5culSS9//77Wrx4sXbs2KFff/1Ve/fu1ZAhQ7zyeuGFF/Too49q5syZSkpK0qFDh+R0OnXZZZfpsssuk2ma1ra0f/9+ORwOxcfHW19ONWrUSJdeeql27dql//73vxoyZIi1/N966y2tWrVKP//8s8LCwpSUlKTu3btrzpw5uu222yQdP4o/ceJEhYaGat++ferXr58eeOAB9ejRwzo9XTredP/000965513JB3fjhs1aqTNmzeXadkAAMqPphsAoE6dOhWJXX755eWa18aNG9WyZUufv/nNyMgocrptSfbv3++zuS904MABrV+/XmPGjNG2bdskHT/a/q9//cvnbcvy8/OVnZ1tnZ785JNPaurUqZo1a5bX7cgOHDigxo0b6+qrr5Yk68rml112mZo0aWJNt2PHDqWkpOjiiy/W1KlTlZmZqcmTJ+uyyy7T77//rpCQEEVHR2vixImSjje/kyZN8vqt+Mmnl5umaR3p9qdhw4b65ptv/E5zquzsbIWHh+vw4cMKDw9XRESEpONX4h44cKD27dun9u3bKzc3V263W7Vq1VJ2dnaRi3G53W7ry4uKNGfOnBJPsW/atKlWrlypt99+W02bNlVeXp7XKfajR4/Wd9995/M2XA8//HCRC97t27dP119/vXr37m2dVl5QUGD93r1Lly46cOCA1zqYmpqqFStW6MMPP1SnTp20YcMG9e7dW3/961+1YMEC3XvvvWrQoIF++eUXDR06VPv379dZZ52l0NBQax6PPvqoHn30US1cuFDvvfeedUG3adOmadKkSXrxxRe1Y8cOrV27VocOHVLXrl115513ql27durVq5c6dOhgHb0eNWqUcnJydN555xW50vmgQYN0/vnn61//+ldJww8AsAlNNwBUY4WN8Y4dO6xG8ujRo9bFoU4+whwfHy/TNEuc55o1a9SzZ0+fz2VkZHhdjbs0atSooZSUlGKfb9CggVczc7Ls7GxJ8jrdNjQ01Gv6wkarZs2aXr/h/u2334pcCM2X+Ph4/fjjjzr//POt9+jSpYtat26tpUuXavDgwV7Tl3T199JexTslJaXMV4jv1q2bNm7c6PVeJxs4cKDX48JG85133vG64F7hGRCnng1xspJO9T8dYWFh1lHh1NRU1apVS0ePHlVoaKgiIyPldDplmqZ27NihpKQkXXPNNcrNzS2y/u7bt0+tW7fWBx98oP79+1vx5ORk7d2713p86pc+devW1T//+U9FRETotdde07x587Rq1SodPHhQzZs3V9++fdW3b1/95z//kSRt3rzZ5ynuBw8e1Lhx4zR79mzrPQ4ePKiCggLdfvvtio2NVYsWLbRmzRrde++9ioiI0GOPPaYvvviiyLy4QjkABC/20ABQjZWmiT5ZSUc3f/31V23evFnTp0/3+Xx6errXVaRLo23btpo9e3aJ0+3YsUN169aVdPx3va1atdL06dP1j3/8w/odeXZ2ti688MJiT9s+uQldvny5dVVr6cTVz08dsxo1anhdcE6SWrZsqfr16+vXX3/V4MGDlZWVZf1uvLSnwReeWh0WFuazoVq/fn2R9y3JihUr5HQ6tXLlSj300ENas2aNtm/frltuuUXz58+3jgLv3LlTPXr00N69e5Wfn69atWp5zaew0T71C4VTlfU33WWxbds2tWjRQkeOHNG7776ruXPnatCgQVq6dKn+9re/KTMzUyNGjNDll1+uOXPm+Pyy44knnlBsbKzXl0QFBQX69ttvdfToUW3YsMHnb5+zsrLUoUMHhYeHKycnRxEREerRo4fcbrfy8vK0b98+FRQUaNy4cTp48KC+/fbbIj+R2LFjh7VuLFq0SM8884xM09TSpUv12GOP6a677lLdunU1ZswYtW3bVg8//LCcTqd1dgIAoPKo+MuKAgAqjcJGsmnTptZtlgpP/7744outmGEYOnjwYJFTV0/197//XY0bN/Z5anpGRoby8/PL/JvuAQMGaO3atdq0aZPf6Zo2baqUlBSlpKRo/vz5kqQpU6aodevW+vjjj5WSkqLLL79c1113XYnvuXTpUm3bts3rHsuFY3Xqad/79+/X999/7xXLz8+Xy+WyrpTet29f1ahRQyEhIVq+fLmmTJniNbZHjhzRyJEjvWKhoaGqWbOmFi1aVCS/w4cPa8mSJbriiitKrOVk9erVU2xsrPLz89WwYUPFxMSoffv2atu2rfr166fvv/9eMTExMgxDUVFRio2NVYMGDYocUd+wYYOVt2maPv+9+eabZcqtrC6//HJ99NFH+uKLL2SapiZPnlykIT3vvPOUm5urX375pcjr9+zZo1deeUUzZszwqu+9995TaGiobrrpJv3jH//w+d5RUVHyeDz64YcfFBUVpZ07dyozM1MPPPCAevfurQYNGuiss87SRRddpKlTp+qzzz7TgAEDvOZRu3ZtRUVF6aabbtJFF12khx9+WG+++abq1KmjmJgYHT16tMgXVHXq1Cn2lnnS8aP+48aNs+XUfwBA+XGkGwCqscIP56tWrfK6ZVinTp20cOHCIlfu9tcwz5kzRx9//LHeeOMNn6d7Hzx4UJLvi6/5U69ePQ0fPlz33Xefli5dWuz9oXfu3GmdIp+VlaXGjRtLksaMGaPnn39eCQkJWr16tV577TW/77dv3z6NHj1aAwcO9Pqte+FYndp0L168WNOmTdPvv/9unRa+cOFCZWdnW1c0X758uQzDUEhIiHXht5P5umVY4VXMfR3lnjhxovr27at27dr5rcVfjYXLITw8XO+++67+/ve/q3Xr1pKOnzYeGRlp/Xb71FunffLJJ2rXrl2Zv0CpKJs2bVJycnKRW2mdejS7Ro0a6tmzp956660i6/KYMWPUvXt3ry9hUlNTNX78eI0fP17XX3+92rVrp9mzZ+uuu+7ymcfkyZMVFxenBQsWqHPnzpo1a5YWLFhgPX/vvffqqquuUteuXdW9e3ev18bGxnp9WWOaphITE5Wenq6IiAitWbNGt99+e6nHJCMjQ1dccYVycnLkcrnKfO0EAIB9ONINANVYfHy8rr32WrVu3VpNmjRRkyZNrGY1Pj7eihX+i46O1urVq4tcEXru3LkaO3ashg0bpltuucXne23YsEGSSvU76VNNmzZN69ev1+TJk4udJiEhQV999ZXmzZun4cOHKzk5WRMnTtSYMWP022+/adCgQbrrrrt83q7L4/Foy5Yt2r59u/bs2aObb765yCnthUf5T639uuuuU15engYPHqy5c+fq73//u/7v//5PPXr00J/+9CdJx38vHhkZqbCwsGK/NDiVw+FQREREkab7pZde0vvvv69Zs2aVaj6+JCcna8GCBdZRdafTqalTp6pZs2YyDEO9evXSrl27FBISoocfftjrtQcPHtQ777yj4cOH+32Pki4Edzo+/PBD9enTx/o5QXF++uknDRo0SG+88YYyMjKs+KxZs/Tpp5963Wrs8OHDGjBggFq2bKl7771X55xzjmbOnKmxY8dq6tSpPn+K8dprr2nGjBn65Zdf1Lt3b6WlpWnp0qXW78ELXxMaGmrdR7xQWlqavv76az333HMaPny4GjVqpN69eyslJUVPPvmkPB6P1+/MCz3wwAPavn27VywrK0vvv/++3G63vvrqKxpuAAgyHOkGgGqsZ8+eRS56VtgUFncq+WOPPaacnBytXr1a6enpuv/++/Xqq69q8ODB1q23Cv3888/64osvdPDgQb355puqW7eudTS1LOrVq6ePPvpI/fv3V0ZGhlezdO+992rhwoWqUaOGJk6cqPbt2ysvL08NGjTQlClTdPjwYUVGRiohIUH//e9/FRERoSFDhlj35N63b59uvvlmHT58WLfccotuu+02RUZGyjAMtW7dWvHx8apXr54iIyP13XffKScnR6tWrdKBAwfUqVMntWrVSkuXLtXYsWN19913q379+hozZoymTJlS4kXTCrnd7lL9vv6pp57S5MmTtWTJEjVv3rzM41ho6tSpfr/AmDZtmtatW6f//Oc/Xke5TdPU2LFjFR4ebt266lQLFizQwYMHtWjRoiKnR+fn52v9+vUKDw/3eQR///791hW5T1Z4L/Y2bdpIkt544w397W9/85rm5FOqPR6PEhMT1b9/f82cOVNOp1OTJk3SM888I4/Ho7ffflu33nqrdd/rxYsXa8yYMTrrrLP0/vvvW2dq3H777UpNTdXDDz+sFStWaObMmerQoYP1PnXq1FGrVq30zDPPqHfv3nrwwQf10ksvafv27Zo/f77+9a9/6fnnn9e0adM0aNAgffDBB6pXr54k6fXXX9fEiRPVo0cPDRo0SHfeeae6d++u//znP5oyZYrmzJmjyMhI6xoAq1evVmRkpJ588kn16dPH6yrs69ev1wUXXKBly5YVuVBh4en+AIAAMgEAOInH4zGjoqLMG264wUxKSjI3b95s/Vu8eLFZo0YN84EHHjAzMzPNdu3amYZhmPfff79ZUFBQZF779u0zDcMwJZlt2rQxP/7449PKbcOGDebcuXO9YocPHzYzMzO9Ym+99ZbZpk0bc/Xq1Wb79u3NTz/91DRN09y/f785efJkc/DgwabL5TJN0zSnTp1qdurUyUxPT7de//XXX5sTJkww+/fvbzZv3tyMjo626jj532+//XZa9RSqWbOm+corr5Q43X//+19zzZo1FfKevvz0009mRESEaRiG+eqrrxZ5fuXKlWZMTIz57rvvFjuPJ554wgwJCTFbtmxpvvnmm17P7d+/3wwJCTFr1apl1q5du9T/IiIizAsvvNA0TdP86KOPTMMwzL1795qmaZrbtm0z7777brNRo0bmyJEjTdM0zV69epmSzAcffND0eDzmG2+8YRqGYb799tumaZpmVlaWefjwYdM0TXP06NGmJHPEiBFmdna2z5oWLVpk1qlTx2zbtq157Ngx0+PxmLNnzzZ79+5txsbGmk8++aS1/i9fvtzs0KGDedZZZ5krVqwwTfP4env22WebdevWNTdt2mSapmnm5OSYBw4c8Hqfl19+2ZRkTp482YplZ2ebHTp0sNa5wYMHmx6Px+t1GzZsMI8ePeoz9169epn33XdfscsLAGA/wzT5+hNV37hx47xOxWzevLl1P18ART3//POaOnVqkds+GYahdu3aadGiRWrYsKG2bdum8ePHa/HixdY0p25f69at0znnnFPiqcB2MU2zxFO6s7KySnX7rby8POXn51tHpst6+7PihIeH6+mnn9bdd99dIfM7HW+++aYuvPBCtWjRwufzmZmZioqKKvb1BQUFcjgcpb5Ke1l98803evHFF/XOO+9IOr58O3furISEBD3xxBNq37697rrrLnXs2NHrN9GzZ8/WTTfdVOTo+759+7R+/XoNGjTI7/vu379fLpfLOlPjnXfeUUpKim699Vavnyzs3btXL774oiZMmOAVT01N1ZIlS/zeh9w0TZ9XOgcAVG403agWevbsqUcffdQ6jdbpdBa5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v7/X4z179mjQoEH697//XTGZAQAAAABQyZWq6e7bt6+uvPJKrVixwort3LlTkpSYmKhx48apffv2atWqlW677TZ7MgUAAAAAoJIp1W+6v/nmGy1cuFAPPvigTNPU/PnztX//ftWrV0+NGjXSZZddprFjx2rkyJGKjIy0O2cAAAAAACqFUjXdhmFo+PDhGj58uL7++ms1atRI8fHx+vXXXxUVFSVJmjNnjq688kp99913qlOnjq1JAwAAAABQGZTYdO/du1cJCQmKiIiQJJmmKUnKz89X/fr1relM01Rubq5uueUWffTRRzalCwAAAABA5VFi033WWWfJ7XZ7XZXcNE01b95c27dv95r2yJEjysnJqfgsAQAAAACohEp1ennz5s2tI925ubn6448/9O233+r+++/XsWPH5HAcvx5beHi4RowYobPOOsu+jAEAAAAAqCRKdfXy3Nxcffjhh3r//feVl5cnSWrYsKE++OADXXjhhbrgggt0wQUXaNeuXXrkkUdsTRgAAAAAgMqixCPd+fn5crvdatWqlSTJ6XSqadOmqlWrlvbv369bb73VmjY6Olpr1qyxL1sAAAAAACqREptup9OpZ599Vvn5+QoNDdW3336r3NxcHTt2TGlpaV7TXnPNNbrmmmtsSxYAAAAAgMqkxNPLHQ6HPvjgAz377LOSjh/5vuOOO9S8eXO1bt1ajRo10o033qgPP/yQi6gBAAAAAHCSEpvuvXv36tChQ7r//vslSXfddZcSEhIUGRmpBg0aaOPGjRo0aJDmzp2r+vXr695777U9aQAAAAAAKoNS3TLss88+s65Qft111+nqq6+2nq9Tp45uueUW3XLLLdq6dasOHDhgW7IAAAAAAFQmpbp6eXh4uPX/4cOH69ChQzJN0+d0/fr1q7jsAAAAAACoxErVdJ8sJSVFbdu21dGjR4s8FxYWprCwsIrICwAAAACASq/MTXdYWJhM0/Q6+l3IMAzrNHQAAAAAAKq7MnfIDodDhmEoJKTEn4MDAAAAAFCtcVgaAAAE1OLFi9WsWTOFhISoc+fO2rx5c6BTCiqMj3+MD2Aftq+KUaqm29f9tw3DqPBkAABA9fLHH39o5MiRmj59uvbu3atWrVpp1KhRgU4raDA+/jE+gH3YvipOieeI7927VwkJCV5NtmmaioiIKDKtaZqKioqq2AwBAECVtXnz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Eg0dOlRjxozRP/7xD4WGhkqSLrnkEu3atSvAGQbOnj17NGjQIOvxL7/8ogEDBmj//v0KDQ1V+/bt1bhxY23ZskXdu3cPYKaBN2jQIG3cuFETJ05Uu3btNGPGDN10002BTiugQkJCVFBQ4BWLi4vT3r17FRkZqZ49e8owjABlF3jr16/XFVdcYT2uU6eOhg4dqnPOOUc7d+7UxRdfrDvuuENPPPFEALMMnMTERH333Xf6+uuv1aNHDzVv3lx33HGHbrzxRoWHh0tStT4jYP/+/WrQoIH1uHXr1jIMQ02aNJF0fFs7cuRIgLILvGXLlum+++7TzJkzNXToUEVERHjtb1q1aqW9e/cGMMPA4/Ohf4yPf4xPxeA+3agWHA6HMjIyVLNmTW3ZskU33HCDMjMzdd9996lNmzZ64YUXtHXrVv3888+BTjUghg0bpoiICD3++OPKz8/XiBEjtHXrVl122WW699579fPPP+vuu+/W7t27FRMTE+h0z6i//vWvysjI0JIlS3TjjTdaccMw9P333+u3337TZZddpqVLlwYwy8C677779Omnn+qFF15Qz549dejQId15550qKCjQ0qVL5XK5FBMTI4/HE+hUA6Jly5YaO3asdYq92+3WgAEDdO+992rw4MHauXOnxo0bV61/4lLI7Xbriy++0Isvvqjvv/9e48aN06233qqEhIRqu/5069ZNtWrV0ocffqjo6Gg9+uijWrBggXr06KE777xTr732mrZv366vvvoq0KkG1EcffaQHH3xQmzdv1gMPPKARI0bI4/FowoQJql27tt5+++1ApwigGqPpriJM06zWR5JK4nQ65XK5VLNmTUnHP9i9+uqrVrPdpUsXzZ07V61btw5wpoFx5MgR3XrrrVq2bJk8Ho+GDh2qV199Vffcc4/ef/99xcbGasaMGbr22msDneoZN3/+fKWkpGjSpEmaM2dOsdPdcsstZzCr4JKdna2xY8fqjTfekNvtlsPh0IABA/Tyyy8rISFBx44dU5cuXfT7778HOtWA+PTTT3XdddepY8eOOuecc7R+/XrVqlVLq1evts62QVG7du3S1KlT9cEHH+jw4cPVtulev369rr76au3fv1+RkZFq3ry5li5dqgkTJujzzz9X8+bNNW/ePDVt2jTQqQacaZp655139O9//1s//fSTJKlXr1764IMPFBcXF+DsAsvtdmvlypX66aeflJqaqoKCAkVHR6tjx47605/+pLCwsECniCC1ZMkSDRw4UBEREUWe++STT9S2bVs1a9YsAJlVLjTdVUBBQYEGDhyo6dOnV/tTf30xTVO7d+9W48aNA51KUDr5C5vMzEx5PB5FR0cHOKvgkJ2drRo1aig1NVWTJk3S888/H+iUgs7J609OTo52796thg0bKioqKsCZBYfC8dm3b5/ee+897d27Vy1atNDw4cOtU6ers8JtzJ8dO3Zo1apV1fKLrcL1x+12a/369XI6nerYsWOg0woa/g44ZGRkyO12V7uzs3z56KOPdNttt6lWrVrq2bOn6tWrp9zcXO3YsUPff/+9oqOjtWTJEp177rmBTjWo7Ny5U6NGjdI777yjunXrBjqdgHE6ndbFdk/9cm/u3Ll64IEH9Nprr2nIkCEByrCSCMDvyGGDBx54wAwLCzOHDRtmfvLJJ+bBgwfNgoKCQKcVcPn5+eall15q/vDDD4FOJSgxPsXLzc0127Ztay5cuDDQqQQt1h//GB//2Mb8Y/3xj/EpnYMHD5o1a9Y0582b5/P57Oxs88477zS7det2hjOrHGbNmmX26NHDPHz4cKBTCRguRlwxuGVYFTF9+nStW7dO0dHRuvPOOxUfH6/Q0FBFRUWpTp06qlOnjmJiYhQZGSmn0xnodM+YkJAQde/eXRdffLFuuOEGffrppzp06BD3Dv4fxqd4YWFhGjdunEaOHKkLL7xQc+bM0Y8//qg//vhDKSkpSk9PV3p6uo4ePaqDBw9qz549gU75jGP98e/U8fnkk08Yn5OwjfnH+uMf+5/SWbdunWrUqKFbb73V5/MREREaP368/vjjjzOcWfBwOp1yOBw+/91zzz368ccfq/2ZpE8//bR1scKHHnpI+fn51nPV/WLEpcXp5VVUs2bNtHbtWknHL/h00UUXaeXKlXI4HLrooou0cePGAGd4Zm3YsEGzZs3SsmXLrB1DZGSk9XtK0zSVl5en3NzcavkHm/Ep3uHDhzV37lwtW7ZM3377rdepsFlZWYqMjLT+f+oVvKsL1h//GB//2Mb8Y/3xj/HxLy0tTW3bttXgwYP18MMPFzk9eP369XrkkUfUrl27ansHhdI2jNX1Z4pcjLiCBO4gO+x06v3yOnToYP2/ut+vsmnTpuaRI0fMI0eOmKmpqWa7du3MlJQU6//VHeNTPH/b1cn/r85Yf/xjfPxjG/OP9cc/xse3zZs3m1dddZUZGRlpxsTEmAkJCWb9+vXN2NhY86KLLir21HPANI+fXp6ZmWk9LigoMF966SWzc+fOZs2aNc2LLrrI/O233wKYYeXAfbpRLcXGxlr/dzqd1lVNHQ5+cSExPuVhctKQhfXHP8anfNjGjmP98Y/xKapNmzZavHixTNNUamqq8vLyFBkZqdq1awc6NVQCO3bssO7+Ix3frkaPHq3Ro0cHMKvKh6YbAAAAqIJOvkOAYRjV/tZppzK55a5fpmlW29PqK1r1/dqvCvF4PJowYUKp74HLzgUAAKBqy8vL03nnnadFixYFOpWgVFBQoH79+unHH38MdCpBifGpWDTdVYDD4dCsWbPkcrms2Kmn4Z38uDqdoscXEv4xPsVzu9267rrrtGHDhlJNX53GphDrj3+Mj39sY/6x/vjH+JSMOwT4xxXw/WN8KhZNdxXRvXt3XX/99br00kt16aWX6uDBg9b/L730UiUnJ+vSSy9V3759tWPHjkCne8bwhYR/jE/xnE6nli5dqoyMDCvG2Hhj/fGP8fGPbcw/1h//GJ/SueOOO7R9+3ZdddVV+u9//6tevXqpS5cuatasmRISEhQXF6fGjRurZcuWatKkSaDTPeO45a5/jE/F4ZZhVURGRoZ+/vln5ebm+p0uPz9fLpdLN9xwwxnKLPAuueQS7d271/pNyg8//KALLrjAen7t2rU6//zzZRiGfvzxR2VmZgYq1YBgfIo3ZMgQff3114qNjZVhGNqzZ4/OOuss6/n9+/erYcOGMgxDe/fuLXH7q4pYf/xjfPxjG/OP9cc/xqfsmjVrpu3bt1uPO3bsqPXr1xf5f3XFLXf9Y3zKjwupVRG1atVS7969A51GUPrkk0/K9IVEdcP4FO/DDz/Url27GBs/WH/8Y3z8Yxvzj/XHP8anYnEc7jiugO8f41M+NN2o8vhCwj/Gp3iGYeicc84JdBpBjfXHP8bHP7Yx/1h//GN8AFQWfCUBAAAAAIBNaLoBAACAKoY7BPjHFfD9Y3wqFk03AAAAUMVwhwD/uAK+f4xPxeI33QAAAEAV1K9fPw0aNMi6Q8DevXvVtGlT6/n9+/eradOm1nPVTeEtdwuvgF94y91ChbfcNQyjWt1ytxDjU3FougEAAIAqiDsE+McV8P1jfCoO9+kGAAAAAMAm/KYbAAAAAACb0HQDAAAAAGATmm4AAAAAAGxC0w0AAAAAgE1ougEAAAAAsAlNNwAAAAAANqHpBgAA+uqrr5SamloknpGRoczMzABkBABA1UDTDQBAFeN0OtW2bVude+65Rf7VrFlTb7/9ttf0pmlqxIgRWrJkiSRpw4YN+uc//ylJGj58uN59990zXgMAAFVFSKATAAAAFSs0NFSrVq1S3bp1izzXp08fRUdHe8W+/PJLhYWFafjw4ZKk999/X4mJiZKkoUOHavHixfq///s/+xMHAKAK4kg3AABVTHh4uN/nQ0NDvR4//vjjuueee+R0OuV2uzVv3jyNGTNGknTVVVdp2bJl2rNnj235AgBQlXGkGwCAKsYwDF188cVyOp1FntuxY4fX48WLF+ubb77R3XffLUl6/fXXVbduXfXv31+SFBMTo7Fjx+qhhx7Sm2++aX/yAABUMTTdAABUQf5OLy+UlpamcePGWdMlJydrwoQJWrp0qddrHnnkEbVp00bvvvuurr/+elvzBgCgqqHpBgCgisnPzy/VdAsXLlS/fv2UmpqqgwcPqn///mrRooX69u2rsLAwr2m7deum2267TZdccokaNmxoR9oAAFRJ/KYbAIAqpKCgQFlZWaWadvTo0XrppZckSbGxsZo4caK+++47/fDDD6pXr56OHj2qo0eP6vLLL9ewYcO0fv16Gm4AAMqII90AAFQhR44ckSSdf/75Pp8/cOCA1+PCi6qFhoZq9OjR1jwaNWpkTZOXl6eaNWuqSZMmNmQMAEDVRtMNAEAVsnbtWiUkJCg5Odnn8yf/prs4q1evVvfu3a3HOTk5qlGjRgVlCABA9cLp5QAAVCFvvvmmLrvssjK9xjRN6/9ZWVmaN2+err76aivmcrkUFRVVUSkCAFCtcKQbAIAq4scff9R7772ntWvXFnluy5YtysjI0K5du4rcxzsvL095eXlKT0/X9ddfr+7du6tXr17asmWLdu/eraSkJK/TzQEAQOlxpBsAgCrA4/HogQce0N/+9jd16tSpyPOvvPKKevXqpYYNG6pr165ezxU23XPnzlVoaKhef/11SdKyZcs0duxYjRkzRm3btj0jdQAAUNUY5snnlAEAgEorLy9PISEhcjiKfqdeUFAgp9MpwzD8zsPj8fh8PQAAKB+abgAAAAAAbMJX2QAAAAAA2ISmGwAAAAAAm9B0AwAAAABgE5puAAAAAABsQtMNAAAAAIBNaLoBAAAAALAJTTcAAAAAADah6QYAAAAAwCY03QAAAAAA2OT/AXZhPx+Lo6C0AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import datetime\n",
    "\n",
    "# ========== 参数设置 ==========\n",
    "N_YEARS = 5  # 最近N年\n",
    "symbol = \"电力\"\n",
    "# ========== 日期范围 ==========\n",
    "today = datetime.datetime.today()\n",
    "start_date = (today - pd.DateOffset(years=N_YEARS)).strftime('%Y%m%d')\n",
    "end_date = today.strftime('%Y%m%d')\n",
    "\n",
    "# ========== 获取数据 ==========\n",
    "df = ak.stock_board_industry_index_ths(symbol=symbol, start_date=start_date, end_date=end_date)\n",
    "df[\"日期\"] = pd.to_datetime(df[\"日期\"])\n",
    "df = df.sort_values(\"日期\")\n",
    "\n",
    "# ========== 添加年月字段 ==========\n",
    "df[\"年份\"] = df[\"日期\"].dt.year\n",
    "df[\"月份\"] = df[\"日期\"].dt.month\n",
    "\n",
    "# ========== 重采样为每月数据（使用每月最后一天收盘 & 第一天开盘） ==========\n",
    "monthly_df = df.groupby([df[\"日期\"].dt.to_period(\"M\")]).agg({\n",
    "    \"开盘价\": \"first\",\n",
    "    \"收盘价\": \"last\"\n",
    "}).reset_index()\n",
    "\n",
    "monthly_df[\"月份\"] = monthly_df[\"日期\"].dt.month\n",
    "monthly_df[\"上涨\"] = monthly_df[\"收盘价\"] > monthly_df[\"开盘价\"]\n",
    "\n",
    "# ========== 统计每月上涨次数 ==========\n",
    "up_counts = monthly_df.groupby(\"月份\")[\"上涨\"].sum()\n",
    "\n",
    "# ========== 新增：统计每月总数据数，并计算上涨概率 ==========\n",
    "total_counts = monthly_df.groupby(\"月份\")[\"上涨\"].count()\n",
    "up_probs = up_counts / total_counts\n",
    "\n",
    "\n",
    "total_up_count = up_counts.sum()\n",
    "total_months = 12 * N_YEARS\n",
    "overall_up_probability = total_up_count / total_months\n",
    "\n",
    "print(f\"总上涨月份数：{total_up_count}\")\n",
    "print(f\"总月份数：{total_months}\")\n",
    "print(f\"总体上涨概率：{overall_up_probability:.2%}\")\n",
    "\n",
    "# ========== 绘图 ==========\n",
    "plt.figure(figsize=(10, 5))\n",
    "bars = plt.bar(up_counts.index, up_counts.values, color=\"skyblue\")\n",
    "\n",
    "# 添加每根柱子上方的文本\n",
    "for bar in bars:\n",
    "    height = bar.get_height()\n",
    "    plt.text(bar.get_x() + bar.get_width() / 2, height + 0.2, f\"{int(height)}\",\n",
    "             ha='center', va='bottom', fontsize=10)\n",
    "\n",
    "plt.xticks(range(1, 13), [f\"{m}月\" for m in range(1, 13)], rotation=-90)\n",
    "plt.xlabel(\"月份\")\n",
    "plt.ylabel(\"上涨次数\")\n",
    "plt.title(f\"{symbol}（最近{N_YEARS}年）每月上涨次数统计\")\n",
    "plt.grid(axis='y', linestyle='--', alpha=0.6)\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
